package com.zzh.lib.core.config;


import android.text.TextUtils;

import com.zzh.lib.core.utils.HFileUtils;

import java.io.File;

/**
 * Created by zzh on 2023/8/25.
 *
 * @date: 2023/8/25 11:10
 * @email: zzh_hz@126.com
 * @author: zzh
 * @description: com.zzh.lib.config
 */
public class LogConfig {

    //文件存储路径
    private String fileLogDir;
    //文件命名格式0 年月日，1 年月日时分，2 直接指定文件名称
    private int fileNameFormat;

    //可选文件名称
    private String fileName;

    private Builder mBuilder;

    public String getFileName() {
        return fileName;
    }

    public LogConfig(Builder builder) {
        if (builder == null) {
            builder = new Builder().setFileLogDir(HFileUtils.getFilePath() + File.separator + "log").setFileNameFormat(0).build();
        }
        fileLogDir = builder.fileLogDir;
        fileName = builder.fileName;
        fileNameFormat = builder.fileNameFormat;
    }

    /**
     * 文件命名格式。 0 年月日，1 年月日时, 2 年月日时分，3 直接指定文件名称
     * <p>
     * 0：年月日格式20230808.log
     * 1：年月日时分格式2023080808.log
     * 2：年月日时分格式2023080808:08.log
     *
     * @return
     */
    public int getFileNameFormat() {
        return fileNameFormat;
    }

    /**
     * 获取文件存储的目录
     *
     * @return
     */
    public String getFileLogDir() {
        return fileLogDir;
    }

    public static class Builder {

        //文件存储路径
        private String fileLogDir;
        //文件命名格式0 年月日，1 年月日时分，2 直接指定文件名称
        private int fileNameFormat;
        //可选文件名称
        private String fileName;

        /**
         * 设置日志文件存储路径
         *
         * @param fileLogDir 文件路径
         * @return this
         */
        public Builder setFileLogDir(String fileLogDir) {
            this.fileLogDir = fileLogDir;
            return this;
        }

        /**
         * 设置日志文件命名格式
         *
         * @param fileNameFormat 文件格式 0 年月日，1 年月日时, 2 年月日时分，3 直接指定文件名称
         *                       <p>
         *                       0：年月日格式2023-08-08.log
         *                       1：年月日时分格式2023-08-08_08.log
         *                       2：年月日时分格式2023-08-08_08:08.log
         * @return this
         */
        public Builder setFileNameFormat(int fileNameFormat) {
            this.fileNameFormat = fileNameFormat;
            return this;
        }

        public Builder setFileName(String fileName) {
            this.fileName = fileName;
            return this;
        }

        public Builder build() {
            if (TextUtils.isEmpty(fileLogDir)) {
                this.fileLogDir = HFileUtils.getFilePath() + File.separator + "log";
            }

            if (fileNameFormat < 0 || fileNameFormat > 2) {
                this.fileNameFormat = 0;
            }
            if (fileNameFormat == 99 && TextUtils.isEmpty(fileName)) {
                this.fileName = "h_error.log";
            }
            return this;
        }
    }

}
